/*
*
* Copyright (C) 2004 - 2008 BitLaboratory (see http://www.bitlaboratory.com)
* All rights reserved. 
*
* Redistribution and use in source and binary forms, with or without modification, 
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
*    this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
*    this list of conditions and the following disclaimer in the documentation
*    and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
*    derived from this software without specific prior written permission. 
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
* OF SUCH DAMAGE.
*
* You can find the latest version of this library at http://www.bitlaboratory.com
*
*/


using System;
using System.Runtime.InteropServices;

namespace BitLaboratory.Win32Api.Themes
{
#if( _SHARED_ )
	internal class ThemedClasses
#else
	public class ThemedClasses
#endif
	{
		public const String BUTTON 		= "BUTTON";
		public const String CLOCK 		= "CLOCK";
		public const String COMBOBOX 	= "COMBOBOX";
		public const String EDIT 		= "EDIT";
		public const String EXPLORERBAR = "EXPLORERBAR";
		public const String GLOBALS 	= "GLOBALS";
		public const String HEADER 		= "HEADER";
		public const String LISTVIEW 	= "LISTVIEW";
		public const String MENU 		= "MENU";
		public const String MENUBAND 	= "MENUBAND";
		public const String PAGE 		= "PAGE";
		public const String PROGRESS 	= "PROGRESS";
		public const String REBAR 		= "REBAR";
		public const String SCROLLBAR 	= "SCROLLBAR";
		public const String SPIN 		= "SPIN";
		public const String STARTPANEL 	= "STARTPANEL";
		public const String STATUS 		= "STATUS";
		public const String TAB 		= "TAB";
		public const String TASKBAND 	= "TASKBAND";
		public const String TASKBAR 	= "TASKBAR";
		public const String TOOLBAR 	= "TOOLBAR";
		public const String TOOLTIP 	= "TOOLTIP";
		public const String TRACKBAR 	= "TRACKBAR";
		public const String TRAYNOTIFY 	= "TRAYNOTIFY";
		public const String TREEVIEW 	= "TREEVIEW";
		public const String WINDOW 		= "WINDOW";
	}

#if( _SHARED_ )
	internal struct ThemeDocumentationPropertyNames
#else
	public struct ThemeDocumentationPropertyNames
#endif
	{
		public const String SZ_THDOCPROP_DISPLAYNAME = "DisplayName";
		public const String SZ_THDOCPROP_CANONICALNAME =  "ThemeName";
		public const String SZ_THDOCPROP_TOOLTIP = "ToolTip";
		public const String SZ_THDOCPROP_AUTHOR = "author";
	}

#if( _SHARED_ )
	internal enum BorderEdge : uint
#else
	public enum BorderEdge : uint
#endif
	{
		BDR_RAISEDOUTER = 0x0001,
		BDR_SUNKENOUTER = 0x0002,
		BDR_RAISEDINNER = 0x0004,
		BDR_SUNKENINNER = 0x0008,

		BDR_OUTER       = (BDR_RAISEDOUTER | BDR_SUNKENOUTER),
		BDR_INNER       = (BDR_RAISEDINNER | BDR_SUNKENINNER),
		BDR_RAISED      = (BDR_RAISEDOUTER | BDR_RAISEDINNER),
		BDR_SUNKEN      = (BDR_SUNKENOUTER | BDR_SUNKENINNER),

		EDGE_RAISED     = (BDR_RAISEDOUTER | BDR_RAISEDINNER),
		EDGE_SUNKEN     = (BDR_SUNKENOUTER | BDR_SUNKENINNER),
		EDGE_ETCHED     = (BDR_SUNKENOUTER | BDR_RAISEDINNER),
		EDGE_BUMP       = (BDR_RAISEDOUTER | BDR_SUNKENINNER)
	}

#if( _SHARED_ )
	internal enum BorderFlags : uint
#else
	public enum BorderFlags : uint
#endif
	{
		BF_LEFT        = 0x0001,
		BF_TOP         = 0x0002,
		BF_RIGHT       = 0x0004,
		BF_BOTTOM      = 0x0008,

		BF_TOPLEFT     = (BF_TOP | BF_LEFT),
		BF_TOPRIGHT    = (BF_TOP | BF_RIGHT),
		BF_BOTTOMLEFT  = (BF_BOTTOM | BF_LEFT),
		BF_BOTTOMRIGHT = (BF_BOTTOM | BF_RIGHT),
		BF_RECT        = (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM),

		BF_DIAGONAL    = 0x0010,

		BF_DIAGONAL_ENDTOPRIGHT    = (BF_DIAGONAL | BF_TOP | BF_RIGHT),
		BF_DIAGONAL_ENDTOPLEFT     = (BF_DIAGONAL | BF_TOP | BF_LEFT),
		BF_DIAGONAL_ENDBOTTOMLEFT  = (BF_DIAGONAL | BF_BOTTOM | BF_LEFT),
		BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT),


		BF_MIDDLE      = 0x0800,  
		BF_SOFT        = 0x1000,  
		BF_ADJUST      = 0x2000,  
		BF_FLAT        = 0x4000,  
		BF_MONO        = 0x8000,  
	}

	[Flags()]
#if( _SHARED_ )
	internal enum TextFlags
#else
	public enum TextFlags
#endif
	{
		DT_BOTTOM = 0x00000008,
		DT_CALCRECT = 0x00000400,
		DT_CENTER = 0x00000001,
		DT_EDITCONTROL = 0x00002000,
		DT_END_ELLIPSIS = 0x00008000,
		DT_EXPANDTABS = 0x00000040,
		DT_EXTERNALLEADING = 0x00000200,
		DT_HIDEPREFIX = 0x00100000,
		DT_LEFT = 0x00000000,
		DT_MODIFYSTRING = 0x00010000,
		DT_NOCLIP = 0x00000100,
		DT_NOFULLWIDTHCHARBREAK = 0x00080000,
		DT_NOPREFIX = 0x00000800,
		DT_PATH_ELLIPSIS = 0x00004000,
		DT_PREFIXONLY = 0x00200000,
		DT_RIGHT = 0x00000002,
		DT_RTLREADING = 0x00020000,
		DT_SINGLELINE = 0x00000020,
		DT_TABSTOP = 0x00000080,
		DT_TOP = 0x00000000,
		DT_VCENTER = 0x00000004,
		DT_WORDBREAK = 0x00000010,
		DT_WORD_ELLIPSIS = 0x00040000
	}

#if( _SHARED_ )
	internal enum ThemeColorProperty
#else
	public enum ThemeColorProperty
#endif
	{
		BORDERCOLOR = 3801,		
		FILLCOLOR = 3802,       
		TEXTCOLOR = 3803,       
		EDGELIGHTCOLOR = 3804,  
		EDGEHIGHLIGHTCOLOR = 3805,  
		EDGESHADOWCOLOR = 3806,     
		EDGEDKSHADOWCOLOR = 3807,   
		EDGEFILLCOLOR = 3808,       
		TRANSPARENTCOLOR = 3809,    
		GRADIENTCOLOR1 = 3810,      
		GRADIENTCOLOR2 = 3811,      
		GRADIENTCOLOR3 = 3812,      
		GRADIENTCOLOR4 = 3813,      
		GRADIENTCOLOR5 = 3814,      
		SHADOWCOLOR = 3815,			
		GLOWCOLOR = 3816,			
		TEXTBORDERCOLOR = 3817,     
		TEXTSHADOWCOLOR = 3818,		
		GLYPHTEXTCOLOR = 3819,		
		GLYPHTRANSPARENTCOLOR = 3820,	
		FILLCOLORHINT = 3821,			
		BORDERCOLORHINT = 3822,     
		ACCENTCOLORHINT = 3823,     
	}

#if( _SHARED_ )
	internal enum PropertyOrigin : int
#else
	public enum PropertyOrigin : int
#endif
	{
		PO_STATE,           // property was found in the state section
		PO_PART,            // property was found in the part section
		PO_CLASS,           // property was found in the class section
		PO_GLOBAL,          // property was found in [globals] section
		PO_NOTFOUND         // property was not found
	}
	
#if( _SHARED_ )
	internal enum ThemeAppProperties : uint
#else
	public enum ThemeAppProperties : uint
#endif
	{
		STAP_ALLOW_NONCLIENT    = (1 << 0),
		STAP_ALLOW_CONTROLS     = (1 << 1),
		STAP_ALLOW_WEBCONTENT   = (1 << 2)
	}

#if( _SHARED_ )
	internal enum ThemeSize : int
#else
	public enum ThemeSize : int
#endif
	{
		TS_MIN,             // minimum size
		TS_TRUE,            // size without stretching
		TS_DRAW,            // size that theme mgr will use to draw part
	}

#if( _SHARED_ )
	internal enum DrawThemeBackgroundFlags : uint
#else
	public enum DrawThemeBackgroundFlags : uint
#endif
	{
		DTBG_CLIPRECT        = 0x00000001,  // rcClip has been specified
		DTBG_DRAWSOLID       = 0x00000002,  // draw transparent/alpha images as solid
		DTBG_OMITBORDER      = 0x00000004,  // don't draw border of part
		DTBG_OMITCONTENT     = 0x00000008,  // don't draw content area of part
		
		DTBG_COMPUTINGREGION = 0x00000010,  // TRUE if calling to compute region
		
		DTBG_MIRRORDC        = 0x00000020   // assume the hdc is mirrorred and
		// flip images as appropriate (currently 
		// only supported for bgtype=imagefile)
	}
	
#if( _SHARED_ )
	internal enum EnableThemeDialogTextureFlags : uint
#else
	public enum EnableThemeDialogTextureFlags : uint
#endif
	{
		ETDT_DISABLE        = 0x00000001,
		ETDT_ENABLE         = 0x00000002,
		ETDT_USETABTEXTURE  = 0x00000004,
		ETDT_ENABLETAB      = (ETDT_ENABLE  | ETDT_USETABTEXTURE)
	}

#if( _SHARED_ )
	internal enum HitTestThemeBackgroundCode : ushort
#else
	public enum HitTestThemeBackgroundCode : ushort
#endif
	{
		//  Theme background segment hit test flag (default). possible return values are:
		//  HTCLIENT: hit test succeeded in the middle background segment
		//  HTTOP, HTLEFT, HTTOPLEFT, etc:  // hit test succeeded in the the respective theme background segment.
		HTTB_BACKGROUNDSEG          = 0x0000,
		
		//  Fixed border hit test option.  possible return values are:
		//  HTCLIENT: hit test succeeded in the middle background segment
		//  HTBORDER: hit test succeeded in any other background segment
		HTTB_FIXEDBORDER            = 0x0002,  // Return code may be either HTCLIENT or HTBORDER. 
		
		//  Caption hit test option.  Possible return values are:
		//  HTCAPTION: hit test succeeded in the top, top left, or top right background segments
		//  HTNOWHERE or another return code, depending on absence or presence of accompanying flags, resp.
		HTTB_CAPTION                = 0x0004,
		
		//  Resizing border hit test flags.  Possible return values are:
		//  HTCLIENT: hit test succeeded in middle background segment
		//  HTTOP, HTTOPLEFT, HTLEFT, HTRIGHT, etc:    hit test succeeded in the respective system resizing zone
		//  HTBORDER: hit test failed in middle segment and resizing zones, but succeeded in a background border segment
		HTTB_RESIZINGBORDER_LEFT    = 0x0010,  // Hit test left resizing border, 
		HTTB_RESIZINGBORDER_TOP     = 0x0020,  // Hit test top resizing border
		HTTB_RESIZINGBORDER_RIGHT   = 0x0040,  // Hit test right resizing border
		HTTB_RESIZINGBORDER_BOTTOM  = 0x0080,  // Hit test bottom resizing border
		
		HTTB_RESIZINGBORDER         = (HTTB_RESIZINGBORDER_LEFT|HTTB_RESIZINGBORDER_TOP |
			HTTB_RESIZINGBORDER_RIGHT|HTTB_RESIZINGBORDER_BOTTOM),
		
		// Resizing border is specified as a template, not just window edges.
		// This option is mutually exclusive with HTTB_SYSTEMSIZINGWIDTH; HTTB_SIZINGTEMPLATE takes precedence  
		HTTB_SIZINGTEMPLATE      	= 0x0100,
		
		// Use system resizing border width rather than theme content margins.   
		// This option is mutually exclusive with HTTB_SIZINGTEMPLATE, which takes precedence.
		HTTB_SYSTEMSIZINGMARGINS 	= 0x0200
	}
	
#if( _SHARED_ )
	internal enum ButtonParts
#else
	public enum ButtonParts
#endif
	{
		BP_PUSHBUTTON = 1,
		BP_RADIOBUTTON = 2,
		BP_CHECKBOX = 3,
		BP_GROUPBOX = 4,
		BP_USERBUTTON = 5
	}
	
#if( _SHARED_ )
	internal enum PushButtonStates
#else
	public enum PushButtonStates
#endif
	{
		PBS_NORMAL = 1,
		PBS_HOT = 2,
		PBS_PRESSED = 3,
		PBS_DISABLED = 4,
		PBS_DEFAULTED = 5
	}
	
#if( _SHARED_ )
	internal enum RadioButtonStates
#else
	public enum RadioButtonStates
#endif
	{
		RBS_UNCHECKEDNORMAL = 1,
		RBS_UNCHECKEDHOT = 2,
		RBS_UNCHECKEDPRESSED = 3,
		RBS_UNCHECKEDDISABLED = 4,
		RBS_CHECKEDNORMAL = 5,
		RBS_CHECKEDHOT = 6,
		RBS_CHECKEDPRESSED = 7,
		RBS_CHECKEDDISABLED = 8
	}

#if( _SHARED_ )
	internal enum CheckBoxStates
#else
	public enum CheckBoxStates
#endif
	{
		CBS_UNCHECKEDNORMAL = 1,
		CBS_UNCHECKEDHOT = 2,
		CBS_UNCHECKEDPRESSED = 3,
		CBS_UNCHECKEDDISABLED = 4,
		CBS_CHECKEDNORMAL = 5,
		CBS_CHECKEDHOT = 6,
		CBS_CHECKEDPRESSED = 7,
		CBS_CHECKEDDISABLED = 8,
		CBS_MIXEDNORMAL = 9,
		CBS_MIXEDHOT = 10,
		CBS_MIXEDPRESSED = 11,
		CBS_MIXEDDISABLED = 12
	}

#if( _SHARED_ )
	internal enum GroupBoxStates
#else
	public enum GroupBoxStates
#endif
	{
		GBS_NORMAL = 1,
		GBS_DISABLED = 2
	}
	
#if( _SHARED_ )
	internal enum ClockParts
#else
	public enum ClockParts
#endif
	{
		CLP_TIME = 1
	}

#if( _SHARED_ )
	internal enum TimeStates
#else
	public enum TimeStates
#endif
	{
		CLS_NORMAL = 1
	}

#if( _SHARED_ )
	internal enum ComboBoxParts
#else
	public enum ComboBoxParts
#endif
	{
		CP_DROPDOWNBUTTON = 1
	}

#if( _SHARED_ )
	internal enum ComboBoxDropDownButtonStates
#else
	public enum ComboBoxDropDownButtonStates
#endif
	{
		CBXS_DISABLED = 1, 
		CBXS_HOT = 2, 
		CBXS_NORMAL = 3,
		CBXS_PRESSED = 4
	}

#if( _SHARED_ )
	internal enum EditParts
#else
	public enum EditParts
#endif
	{
		EP_EDITTEXT = 1,
		EP_CARET = 2
	}

#if( _SHARED_ )
	internal enum EditTextStates
#else
	public enum EditTextStates
#endif
	{
		ETS_NORMAL = 1,
		ETS_HOT = 2,
		ETS_SELECTED = 3,
		ETS_DISABLED = 4,
		ETS_FOCUSED = 5,
		ETS_READONLY = 6,
		ETS_ASSIST = 7
	}
	
#if( _SHARED_ )
	internal enum ExplorerBarParts
#else
	public enum ExplorerBarParts
#endif
	{
		EBP_HEADERBACKGROUND = 1,
		EBP_HEADERCLOSE = 2,
		EBP_HEADERPIN = 3,
		EBP_IEBARMENU = 4,
		EBP_NORMALGROUPBACKGROUND = 5,
		EBP_NORMALGROUPCOLLAPSE = 6,
		EBP_NORMALGROUPEXPAND = 7,
		EBP_NORMALGROUPHEAD = 8,
		EBP_SPECIALGROUPBACKGROUND = 9,
		EBP_SPECIALGROUPCOLLAPSE = 10,
		EBP_SPECIALGROUPEXPAND = 11,
		EBP_SPECIALGROUPHEAD = 12
	}

#if( _SHARED_ )
	internal enum HeaderCloseStates
#else
	public enum HeaderCloseStates
#endif
	{
		EBHC_NORMAL = 1,
		EBHC_HOT = 2,
		EBHC_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum HeaderPinStates
#else
	public enum HeaderPinStates
#endif
	{
		EBHP_NORMAL = 1,
		EBHP_HOT = 2,
		EBHP_PRESSED = 3,
		EBHP_SELECTEDNORMAL = 4,
		EBHP_SELECTEDHOT = 5,
		EBHP_SELECTEDPRESSED = 6
	}

#if( _SHARED_ )
	internal enum IEBarMenuStates
#else
	public enum IEBarMenuStates
#endif
	{
		EBM_NORMAL = 1,
		EBM_HOT = 2,
		EBM_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum NormalGroupCollapseStates
#else
	public enum NormalGroupCollapseStates
#endif
	{
		EBNGC_NORMAL = 1,
		EBNGC_HOT = 2,
		EBNGC_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum NormalGroupExpandStates
#else
	public enum NormalGroupExpandStates
#endif
	{
		EBNGE_NORMAL = 1,
		EBNGE_HOT = 2,
		EBNGE_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum SpecialGroupCollapseStates
#else
	public enum SpecialGroupCollapseStates
#endif
	{
		EBSGC_NORMAL = 1,
		EBSGC_HOT = 2,
		EBSGC_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum SpecialGroupExpandStates
#else
	public enum SpecialGroupExpandStates
#endif
	{
		EBSGE_NORMAL = 1,
		EBSGE_HOT = 2,
		EBSGE_PRESSED = 3
	}
	
#if( _SHARED_ )
	internal enum GlobalsParts
#else
	public enum GlobalsParts
#endif
	{
		GP_BORDER = 1,
		GP_LINEHORZ = 2,
		GP_LINEVER = 3
	}
	
#if( _SHARED_ )
	internal enum BorderParts
#else
	public enum BorderParts
#endif
	{
		BSS_FLAT = 1, 
		BSS_RAISED = 2, 
		BSS_SUNKEN = 3
	}
	
#if( _SHARED_ )
	internal enum LineHorzParts
#else
	public enum LineHorzParts
#endif
	{
		LHS_FLAT = 1, 
		LHS_RAISED = 2, 
		LHS_SUNKEN = 3
	}
	
#if( _SHARED_ )
	internal enum LineVerParts
#else
	public enum LineVerParts
#endif
	{
		LVS_FLAT = 1, 
		LVS_RAISED = 2, 
		LVS_SUNKEN = 3
	}

#if( _SHARED_ )
	internal enum HeaderParts
#else
	public enum HeaderParts
#endif
	{
		HP_HEADERITEM = 1,
		HP_HEADERITEMLEFT = 2,
		HP_HEADERITEMRIGHT = 3,
		HP_HEADERSORTARROW = 4
	}

#if( _SHARED_ )
	internal enum HeaderItemStates
#else
	public enum HeaderItemStates
#endif
	{
		HIS_NORMAL = 1,
		HIS_HOT = 2,
		HIS_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum HeaderItemLeftStates
#else
	public enum HeaderItemLeftStates
#endif
	{
		HILS_HOT = 1, 
		HILS_NORMAL = 2, 
		HILS_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum HeaderItemRightStates
#else
	public enum HeaderItemRightStates
#endif
	{
		HIRS_HOT = 1, 
		HIRS_NORMAL = 2, 
		HIRS_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum HeaderSortArrowStates
#else
	public enum HeaderSortArrowStates
#endif
	{
		HSAS_SORTEDUP = 1,
		HSAS_SORTEDDOWN = 2
	}

#if( _SHARED_ )
	internal enum ListViewParts
#else
	public enum ListViewParts
#endif
	{
		LVP_EMPTYTEXT = 1,
		LVP_LISTDETAIL = 2,
		LVP_LISTGROUP = 3,
		LVP_LISTITEM = 4,
		LVP_LISTSORTEDDETAIL = 5
	}

#if( _SHARED_ )
	internal enum ListItemParts
#else
	public enum ListItemParts
#endif
	{
		LIS_DISABLED = 1, 
		LIS_HOT = 2, 
		LIS_NORMAL = 3, 
		LIS_SELECTED = 4, 
		LIS_SELECTEDNOTFOCUS = 5
	}

#if( _SHARED_ )
	internal enum MenuParts
#else
	public enum MenuParts
#endif
	{
		MP_MENUITEM = 1,
		MP_MENUDROPDOWN = 2,
		MP_MENUBARITEM = 3,
		MP_MENUBARDROPDOWN = 4,
		MP_CHEVRON = 5,
		MP_SEPARATOR = 6
	}

#if( _SHARED_ )
	internal enum MenuStates
#else
	public enum MenuStates
#endif
	{
		MS_NORMAL = 1,
		MS_SELECTED = 2,
		MS_DEMOTED = 3
	}

#if( _SHARED_ )
	internal enum MenuBandParts
#else
	public enum MenuBandParts
#endif
	{
		MDP_NEWAPPBUTTON = 1,
		MDP_SEPARATOR = 2
	}

#if( _SHARED_ )
	internal enum NewAppButtonStates
#else
	public enum NewAppButtonStates
#endif
	{
		MDS_CHECKED = 1, 
		MDS_DISABLED = 2, 
		MDS_HOT = 3, 
		MDS_HOTCHECKED = 4, 
		MDS_NORMAL = 5, 
		MDS_PRESSED = 6
	}

#if( _SHARED_ )
	internal enum PageParts
#else
	public enum PageParts
#endif
	{
		PGRP_DOWN = 1,
		PGRP_DOWNHORZ = 2,
		PGRP_UP = 3,
		PGRP_UPHORZ = 4
	}

#if( _SHARED_ )
	internal enum PageDownStates
#else
	public enum PageDownStates
#endif
	{
		DNS_DISABLED = 1, 
		DNS_HOT = 2, 
		DNS_NORMAL = 3, 
		DNS_PRESSED = 4
	}

#if( _SHARED_ )
	internal enum PageDownHorzStates
#else
	public enum PageDownHorzStates
#endif
	{
		DNHZS_DISABLED = 1, 
		DNHZS_HOT = 2, 
		DNHZS_NORMAL = 3, 
		DNHZS_PRESSED = 4
	}

#if( _SHARED_ )
	internal enum PageUpStates
#else
	public enum PageUpStates
#endif
	{
		UPS_DISABLED = 1, 
		UPS_HOT = 2, 
		UPS_NORMAL = 3, 
		UPS_PRESSED = 4
	}

#if( _SHARED_ )
	internal enum PageUpHorzStates
#else
	public enum PageUpHorzStates
#endif
	{
		UPHZS_DISABLED = 1, 
		UPHZS_HOT = 2, 
		UPHZS_NORMAL = 3, 
		UPHZS_PRESSED = 4
	}

#if( _SHARED_ )
	internal enum ProgressParts
#else
	public enum ProgressParts
#endif
	{
		PP_BAR = 1,
		PP_BARVERT = 2,
		PP_CHUNK = 3,
		PP_CHUNKVERT = 4
	}

#if( _SHARED_ )
	internal enum RebarParts
#else
	public enum RebarParts
#endif
	{
		RP_GRIPPER = 1,
		RP_GRIPPERVERT = 2,
		RP_BAND = 3,
		RP_CHEVRON = 4,
		RP_CHEVRONVERT = 5
	}

#if( _SHARED_ )
	internal enum ChevronStates
#else
	public enum ChevronStates
#endif
	{
		CHEVS_NORMAL = 1,
		CHEVS_HOT = 2,
		CHEVS_PRESSED = 3
	}

#if( _SHARED_ )
	internal enum ScrollBarParts
#else
	public enum ScrollBarParts
#endif
	{
		SBP_ARROWBTN = 1,
		SBP_THUMBBTNHORZ = 2,
		SBP_THUMBBTNVERT = 3,
		SBP_LOWERTRACKHORZ = 4,
		SBP_UPPERTRACKHORZ = 5,
		SBP_LOWERTRACKVERT = 6,
		SBP_UPPERTRACKVERT = 7,
		SBP_GRIPPERHORZ = 8,
		SBP_GRIPPERVERT = 9,
		SBP_SIZEBOX = 10
	}

#if( _SHARED_ )
	internal enum ArrowBTNStates
#else
	public enum ArrowBTNStates
#endif
	{
		ABS_UPNORMAL = 1,
		ABS_UPHOT = 2,
		ABS_UPPRESSED = 3,
		ABS_UPDISABLED = 4,
		ABS_DOWNNORMAL = 5,
		ABS_DOWNHOT = 6,
		ABS_DOWNPRESSED = 7,
		ABS_DOWNDISABLED = 8,
		ABS_LEFTNORMAL = 9,
		ABS_LEFTHOT = 10,
		ABS_LEFTPRESSED = 11,
		ABS_LEFTDISABLED = 12,
		ABS_RIGHTNORMAL = 13,
		ABS_RIGHTHOT = 14,
		ABS_RIGHTPRESSED = 15,
		ABS_RIGHTDISABLED = 16
	}

#if( _SHARED_ )
	internal enum LowerTrackHorzStates
#else
	public enum LowerTrackHorzStates
#endif
	{
		SCRBS_NORMAL = 1,
		SCRBS_HOT = 2,
		SCRBS_PRESSED = 3,
		SCRBS_DISABLED = 4
	}

#if( _SHARED_ )
	internal enum LowerTrackVertStates
#else
	public enum LowerTrackVertStates
#endif
	{
		SCRBS_NORMAL = 1,
		SCRBS_HOT = 2,
		SCRBS_PRESSED = 3,
		SCRBS_DISABLED = 4
	}

#if( _SHARED_ )
	internal enum ThumbBTNHorzStates
#else
	public enum ThumbBTNHorzStates
#endif
	{
		SCRBS_NORMAL = 1,
		SCRBS_HOT = 2,
		SCRBS_PRESSED = 3,
		SCRBS_DISABLED = 4
	}

#if( _SHARED_ )
	internal enum ThumbBTNVertStates
#else
	public enum ThumbBTNVertStates
#endif
	{
		SCRBS_NORMAL = 1,
		SCRBS_HOT = 2,
		SCRBS_PRESSED = 3,
		SCRBS_DISABLED = 4
	}

#if( _SHARED_ )
	internal enum UpperTrackHorzStates
#else
	public enum UpperTrackHorzStates
#endif
	{
		SCRBS_NORMAL = 1,
		SCRBS_HOT = 2,
		SCRBS_PRESSED = 3,
		SCRBS_DISABLED = 4
	}

#if( _SHARED_ )
	internal enum UpperTrackVertStates
#else
	public enum UpperTrackVertStates
#endif
	{
		SCRBS_NORMAL = 1,
		SCRBS_HOT = 2,
		SCRBS_PRESSED = 3,
		SCRBS_DISABLED = 4
	}

#if( _SHARED_ )
	internal enum SizeBoyStates
#else
	public enum SizeBoyStates
#endif
	{
		SZB_RIGHTALIGN = 1,
		SZB_LEFTALIGN = 2
	}
}
